cwiki_ProfCata MSSSUG|香港科技大學內地學生學者聯誼會本科部
Cwiki-教授列表

Cwiki


Professor Catalog


返回教授列表

[COMP4901J]Deep learning in CV

TANG Chi Keung
課程時間:2017年秋季
授課教授:CK Tang
這門課的Grade:Grade神

之后课号大概会改

科大CS Elective里面最值得上的课之一(顺便一提,只要是CK教的都值得上)。大势所趋的一门课,内容完全照搬CS231n,全是干货。(Google CS231n有真相)
四个Project,主要是用numpy实现常用的ML算法和用TF应用它们。
考试CK风格,题目复杂、公式吓人、解答简单、给分很松。

以下八卦
> CK: We should follow the trend
> 开学的时候这门课Waitlist挤爆了,于是 CK: If you are not serious (to work hard in this course), ... you belong to the easy courses like image processing and operating system, (please drop)
> CS231n原版是TF/Torch二选一,但是这门课钦定了TF on Windows (Lab 4 Machine),因为帮CK准备这些作业环境的人喜欢Windows
> CK: I ate LG7 for 19 years, and you know HK professors have high salaries than the US, so I should have much money
> CK: This student scored A+ in all my classes but I never see him
> CK: I can tell whether your FYP is FYP or a final week project... with 9 months you can actually create a baby from scratch

查看更多/評論

[COMP4411]写code的乐趣

TANG Chi Keung
課程時間:2017年spring季
授課教授:CK Tang
我覺得教授 :deep dark fantasy
這門課的Grade:神人太多就不好拿好龟了

很有价值的一门课。推荐大家其它课workload不大的时候上这门,这样能多花点精力写bonus

看到上一条wiki说80分只加了一个小龟还是挺伤心的,当时连着一两周熬夜跷课写code才搞到的80多bonus结果没啥用,还是有点打消积极性

final很难,很难,很难,然而还是有些大神能拿到接近满分的分数,很佩服。我好像比mean高10分左右吧,然后80多bonus最后是A-

但是,想出algorithm完成各个bonus的过程还是非常愉悦的,大概这就是cs的魅力吧

查看更多/評論

[COMP4411]不上亏成狗

TANG Chi Keung

課程時間:2017年秋季
授課教授:ck
我覺得教授 666


這門課的Grade:Grade神(三分之一 A range #[滑稽])


具体教学内容和project内容请参考前面大神写的,课程所有东西十几年没变过


这课除了CG,我还学会了多元,顺带复习了一下线代。所以这门课基本上等于COMP4411+MATH2111+MATH2023 + COMP2012 ???


我觉得ck的课认真听还是能完全听懂的,并没有之前预想的那么遭


根据你的努力程度和选择单刷还是组队,实际workload在3~9credits之间浮动


很考验自学能力。当然不是指你不去上课然后自学notes的能力,而是project里的bonus需要看的参考资料,包括paper啥的


c++基本就是从这才学会的,一学期大概写了一两万行吧,不过据说比CK版2012H要少,细思极恐。不过要是不做bonus的话估计也就几千行,但是上这门课不做bonus的话跟咸鱼有什么区别?


这次的Bonus价值远没有前面大神所说的那么神,之前据说80个可以加一个大龟,这次ck说80个就只能加一个小龟,主要相比以前,这次有很多大神在,bonus80以上的有不少


final题量爆炸,80个选择+7道大题,反正我是有一半大题没写完,最后得了个mean。不过好在bonus刷通关了,ck给了点奖励,还是有A+拿 #[滑稽]


作为科大少有的CS非水课,龟神而且干货量爆炸,  不上亏成狗

查看更多/評論

[COMP5421]科大最值得上的CS课,没有之一

TANG Chi Keung

课程时间:2016年Spring
授课教授:CK Tang
我觉得教授:你问我资瓷不资瓷,我说资瓷。他给龟那么好课程内容那么充实我们怎么能不资瓷他呢?
这门课的Grade:3分之2的人是A+。我不是针对谁,我只想说其它grade神课相比之下都是辣鸡

无论你是想刷龟,还是想学点有用的东西,这门课毫无疑问是最佳选择。

友情提示:建议先上COMP4411再上这门课,这门课的内容和4411有一定的重合度。两门课的project GUI都是用FLTK。而且可以和4411的队友再合作4个project,有了之前的默契效率倍增#(滑稽)

这门课的亮点依旧是CK引以为傲的project。相对于另一门神课COMP4411,这门课的workload相对小,因为这门课的bells & whistles不算入最终grade里。所有的project都可以两人组队,当然也可以单干。Project可以任意选用语言和库。除了project2我都是用C++和.net framework,矩阵计算库用的是eigen(都是耿神钦定的),一般来说用matlab写debug会方便点,但是matlab速度很慢,这个自己取舍吧。和COMP4411一样,project一共有四个,但是project是用自己的电脑跑,交了之后代码依旧可以修改,以demo时的用版本为准:

(对于.net framework和eigen一起用的情况,由于eigen一些部分含有汇编代码,需要使用#pragma unmanaged取消托管才能编译。另外对于计算量大的代码建议也用#pragma unmanaged取消托管,能极大提升速度)

Project  1 Image scissor: 这个project就是做一个抠图软件,用来熟悉C++和FLTK(一个GUI库)。提供了C++和FLTK下的skeleton,但是耿神在4411时就已经不爽FLTK很久了,于是我们用.net framework从头写了一个……

Project  2 Face Detection: 这个project是今年才有的(与时俱进啊),用HoG和SVM做人脸检测。提供了matlab下的skeleton。这个project有个bouns competition,demo时会提供一个全新的图片集给你进行检测,Average Precision, dr(FP = 0), dr(FP = 10), dr(FP = 100) (dr 代表 false positive到指定数目时的detection rate)这四个都是最高的组获胜,可获得由CK提供的final额外15分。本来competition规定要在3分钟内跑完的,但是好像没几个组能在3分钟内跑完,于是这条规定就没人管了,白瞎了我们1分钟就能跑完的运行速度(早知道这样就不为了时间牺牲AP了,说不定就能独占冠军了QAQ)……有着i7 6820HK/i7 6700K/i7 5960X或更好的CPU的同学能在运行时间上获得极大的优势,什么?你有双路E5 2699 V4?这拿下冠军是轻而易举的啊,88线程打8线程,你有14nm制程加持的情况下怎么输?你告诉我,直接A脸都赢了,怎么可能输嘛。内存大概16G就够用了,然后把图放在固态硬盘上训练时能快不少。总的来说顶级游戏本和台式的优势很大,macbook很吃亏。我没有任何没有8个或以上框框就赢不了bouns competition的意思,你们千万要注意啊,不要“见着风是得雨”啊。

Project  3 Single view modeling: 给定一张照片,通过用户在图上提供Vanishing Lines和一些参考点,把2D的图变成3D的texture maps。这个project算法上相对比较简单,就是GUI的部分比较烦人,不过据说别的学校的这个project提供了FLTK写好GUI的skeleton,有需要的可以试着搜一下。不是很推荐使用skeleton,因为这样会限制住实现方式。

Project  4 Multiple-view modeling: 假设物体的表面都是朗伯表面,通过一个物体在不同光照方向下的一系列照片,还原出这个物体的表面。这个project是CK一个学生的论文,参照着论文实现起来应该不难。对于Multi-label optimization和α-expansion,http://vision.csd.uwo.ca/code/有现成的库。当初我们不知道有现成的库,耿神随手自己写了一个,比matlab下的那个库不知道快到哪里去了,结果交上去之后发现有个小bug……还好这课不是4411,交了也能改代码。

做完这4个project就有A,如果你交2次作业都交了,project不free ride的话。在这基础上Pass了final给A+,没Pass给的是A-。

下面说说final,依旧是CK一贯的特色,考试期间不上厕所加2分。5421的考试没有4411那么丧心病狂,满分100由两个部分组成。第一部分40分,是30道简答题,从Sample  final exam的100道里面抽30道,每道2分,最多能得40分,考前找人合作或者自己把100道题做了然后背答案就好,认真背的话一般这40分都能拿满。第二部分60分,由5道大题组成。题量相比COMP4411小很多,不用担心做不完。Pass是50分就pass,这学期的mean是62.8,所以pass不难的。考前的时候CK把第一页的前三分之一给了我们,上面有两道简答题,这样一算还没考就有4(2道简答题)+2(不上厕所)+15(project 2 bouns competition)=21分啊,final只要再拿29分就能A+了,直接裸考都A+了,怎么可能烂龟嘛。

另外,通过上这门课,你将可能有机会获得一份计算机视觉相关的待遇超棒的career/intern(有机会去大疆哦)。

查看更多/評論

[COMP4411]Computer Graphics 强烈推荐

TANG Chi Keung
課程時間:2015年秋季
授課教授:CK Tang
我覺得教授 兄贵
這門課的Grade:Grade神

为了避免误会,谢在最前:强烈推荐CS的同学上一下这门课。

我发现自己脸很黑,上的课和贵wiki上其它同学都不是一个风格的。

比如,HUMA1100就用Case Study和填空题把我怒坑了一把。比如,PHYS1112的25道选择题突然变成了30道(midterm)和45道(final),而且最高42 mean 23.8,难度可想而知。又比如,听说COMP4411只有20+个人?Enroll 58。

CK: These year we have many exchange students. I hope you are not just here for sightseeing, so I will make the final exam more difficult.

CK: We will have 80 MC questions.

CK: There are 7 longer questions covering 7 topics, 3 of them are ...

CK: Unlike previous final this time I did not use any HW problems.

这课的前置是COMP3711/H。这简直是在开玩笑,怎么可以没有线代(矩阵)和多元?

如其它同学所说的,CK讲课不清不楚,上课基本上就是在写project、欣赏兄贵和听他讲You don't need so many colors if you are watching an adult movie。Notes极其跳跃,天才的世界我不懂。这课还是得靠看课本相应章节。

然而,抛去这些小问题,这门课的内容和Project还是极好的。内容上这是科大少有的(如果你把Notes对应的课本看了的话)干货十足、难度足够的COMP课。虽然CK讲了跟没讲一样,认真学的话还是能学到不少东西的。Project更是在写的过程中能让你掌握更多相关知识。

四个Project,其中两个required。当然为了成绩不仅四个都要做还要怒攒bonus,攒够80个可以加3个sub grade哦(龟神!)。考虑到这一点,还是组队比较好。

Impressionist主要是了解FLTK和C++,实现一些简单的图像处理,总的比较轻松。

Modeler画个模型,主要是OpenGL 3D部分的内容。没啥难度,数学不够好的话IK可以用最简单的gradient descent实现,加点trick效果也不错,O(3^n)看起来也不慢嘛(逃

Trace实现Ray Tracing,搞明白RT的递归算法之后也不算很难,但是这个project我还是水了——时间正好撞上HUMA1100 Case Study,悲剧。效果还是很好看的,可以给人成就感。

Animator基本上是Modeler的延伸。好好学习OpenGL吧!比较有意思的bonus是Pick the model、Cel Shading和Projective texture,第一个用FBO后两个用Shader,给人一种自己的技能等级又提升了的感觉。



没上过这课以及没写过OpenGL的人大概不知道我上面说了啥_(:з」∠)_ 这不就是你该去学一下的好理由吗!很有意思,又很实用的干货哦!

再给要上的人一点提醒。Skeleton code有各种flaw和bug,务必小心。比如:

Impressionist的图片全是RGB(char [w*h*3]),最好一开始全部就改成*4以绝后患。

RT里Sphere和Cone的Normal是错的。

Mat4f::CreateRotate(还有CreateTranslate之类)返回的是Identity Matrix。浪费我一堆时间debug。

operator *(const Mat4&, const Vec4&)漏了const所以不能过编译。

总之,这门课虽然Project的workload不小,但是很值。能学的东西很多,我科CS不可多得的好课。如果有人来exchange,那确实也是个推荐的对象。

查看更多/評論

[COMP4411]让 CK 和 dekai 相爱相杀去吧

TANG Chi Keung
课程时间:2014 Fall
授课教授:CK Tang
这门课的Grade:烂


我觉得 CK 讲这门课时并不是特别负责任。lecture notes 的格式混乱;homework 上写的 submission date 还是十年前的;project requirement 有一些 vague 的地方;并且一下课比西方的那些记者跑得还要快。


怎么说呢,虽说「挖(hei)掘(de)机(kai)技术哪家强,香港科大CK Tang」(见下图),但是 CK 的套路其实是跟 dekai 很像的:上课比较随意,很爱口若悬河地讲大量不在 notes 上的黒科技黒历史,并且内容蛮有老一辈 hacker 的风范。而 projects 的 workload 都很大,占 grade 比重也很大,但 projects 的 grading 并不是很严谨。





这学期的四个 projects 依旧是之前的四个。Simple image processing; Hierarchical modeler; Ray tracer; Animator & particle system。多的我就不提了,学习谭神好榜样,我来 po 一张 screenshot 好了。第二个 project 的半成品截图(只是草草完成纹理贴图和动画时的截图;最终效果比这个好)。



查看更多/評論

[COMP4411]科大难得有code量的CS课

TANG Chi Keung
课程时间:2014 Fall
授课教授:CK
我觉得教授很犀利

这门课的Grade:Grade神/较好


对这门课的介绍,大家请直接移步谭神的帖子 http://ihome.ust.hk/~msssug/cwiki/798


几个补充:
1. 给龟方法:project里面的bonus会在算完总评拉完curve以后转换为x个subgrade往上加。
照CK的习惯,裸分(不算bonus)最高的直接给A+,bonus一般转换成0-3个subgrade。
2. final:今年final已经进化为80道MC+5道大题,必须有相当的熟练度才能做完。
另外鉴于今年依旧有local大神怒拿156/170的final成绩,CK有望在下次再加题量。
3. bonus:这里特别感谢我的神队友@deng,共同砍下80+个bells,也是十分痛快。


祝大家好运!

查看更多/評論

[COMP4411]Computer Graphics

TANG Chi Keung
课程时间:2014 Spring Sem
授课教授:CK Tang
我觉得教授:很搞笑,像只可爱的大猩猩

这门课的Grade:Grade神

全堂22个人,给了超过20 Percent的A+,应该所有Mainland都是A+,这样一门课实在没法吐槽烂龟


继2012h的ck版不幸被灭掉之后,可以来上下这门课感受下


相比之下workload要比之前ck的2012h小不少(2012h有5个project而且没有skeleton code,这门课四个Project而且有Skeleton code),不过对于Engineering思维像我这样实在烂得,还是能得到很大锻炼


即使对graphics没什么兴趣,那上下这门课也是值得的,UG课里面这门课应该是唯一一门能让人看到Matirx还有一些简单的Algebra在CS的世界中是如何应用的,并且有机会亲手implement。Project起来要在简易的math,空间变换,code之间不停的切换。而且这门课还提供了两个延展的方向:学术流和设计流,学术流就是专门研究那些Theoretical的Bonus,设计流就是把每一个Model和Animation都做得尽善尽美,两位大神分别走了这两种路线。我参考了一下之后走了 酱油流 。


ck的思维很跳跃,我唯一看到过这么跳Lecture Notes是在韩一龙(龙哥)的课上,跟着这样的Professor一般都比较好玩,复习的时候有很多空隙要自己填补,不会觉得很无聊


Project里面有各种Bonus,抱了大神大腿,自己Implement的比较少。感觉还是要少上课但上的精啊,像Network这种的尼玛上起来简直是吐槽不能。


祝好运


Ryan









查看更多/評論

[COMP2711]被各种大陆大神刷龟了

TANG Chi Keung
课程时间:2014年春季
授课教授:Dit-Yan Yeung

这门课的Grade:较好

内容不算很难(谭神曰:内容很水)……但是有各种大陆的大神们在这门课刷龟来着,想作为CCC的同学且上且珍惜。

Final 60%,Midterm 2*15%,Problem Set 10%

每个Problem Set都有超过10道题(最多的有17题),每题10分,cap 100,所以不要太懒的话那10%妥妥的

为什么我说有很多大神刷龟呢?总分96.25,就已经与A+无缘了……老实说有点意外,不过也让我见识到了自己与大神们的差距

查看更多/評論

[COMP2012H]记在一门课消逝之后

TANG Chi Keung

课程时间:2013年Spring季授课教授:Chi-Keung Tang
Grade:很好

Update: 据CK的消息,2013-2014学年的2012H由dekai教....好自为之好自为之

虽说课程已逝,以后再有的机会怕是很少了,但总归是科大CS系的具有标志性的一门课,还是老老实实地将所见所闻胡乱发泄一通吧。


先说龟,这门课的龟是很好的,虽说之前见到fb上有若干local提出质疑,认为本来就是若干大神凑在一起写code的课,龟自然坏不下去。对于这种说法我需要指正一番。以课上某位童鞋wd为例(顺手一黑,本文将多次以该具有代表性的童鞋为例,请当事人不要往心里去),该童鞋这学期才刚转CS,之前的专业与CS风马牛不相及,可以说是鲜嫩的菜一枚。然而在课程最后,该童鞋获得A的评定。不是我要故意黑,私以为该童鞋在学期甫一开始时没有体现出任何CS天赋,然而学期末获得A的成绩,我认为不是该童鞋隐藏大神属性,也不是CK看在最后一次课手下留情,而是该童鞋发奋努力的结果。因此,认为此课龟好在于课上多大神(虽然我承认课上是有某local大神血虐全场)的谬论可以平息了,龟好龟坏,不在于教授(LANG除外),不在于其他人(HUMA除外),私以为更在于自己。


下面结合wd童鞋的实际进步史谈谈这门课的各项内容
课程评分按照project(50%), lab(5%), midterm(15%), wriiten assignment(5%), final(25%)来给分。课程的难点在于50%的project,常规的project5个,另有一个拉龟用project。


midterm之前主要讲OOP,内容目测与隔壁2012差不多,只是速度快了不少。OOP这边个人感觉工程性较强,思想性偏弱,切入点偏向语言特点而不是思路。感觉是教会你使用OOP,而没有探讨使用OOP的原因。或许是我以前POP写多了,所以会有这样的疑问。但其实OOP是个很自然的想法吧,但是个人觉得了解一下程序设计思路的变迁是一件很有意思的事情。
midterm之后开始涉及Data Structure,同时介绍了一下Algorithm。这些内容还是比较浅显的,算法分析也没有太过深入(留至3711H了),介绍了一些基本的数据结构和算法,对于以前没有接触过CS的童鞋来说确实有入门效果。


CK讲课非常有特点,首先是很快,这个快仅限语速,并不指内容,因为CK讲话喜欢夹杂40%的er....en...
其次是各种兄贵闪瞎氪金狗眼,上学期上了papa的1004已经被各种兄贵闪瞎,这学期又上了ck的课,让我不禁感觉这俩是多么好的基友啊


lab挺简单的,主要是教怎么用qt,一般project1的时候lab就要做到7了,个人觉得那还不如直接batch mode在第三个星期前把所有lab都写掉比较好。


written assignment个人觉得其实可以是加深数据结构和算法理解的大好机会,可惜有些题目实在有点没意义


midterm在前一天会有preview session,今年在良好的组织下当晚把所有答案都弄出来了,所以基本都是满分,除了某童鞋= =。final会提前告诉你每道题的title和分数。CK号称会有道谁都做不出啦跌题,实际上题目都很naive,但结果我看错一道题做败了= =


project可以说是这门课的亮点,code量巨大。而且每个project都可以玩出花巧(当然相应地code量进一步增大)
CK有个非常有意思的late credit系统,每个人五个,所有project一共可以迟交5天。听说以前credit一个值一顿饭,可惜了今年没有交易,就连wd童鞋都没用完,真是呜呼哀哉。
project1是写一个小画家,结构可以写得很简单,但是code量绝对不少,而且是第一次用qt写GUI,可以说是五个常规project压力最大的project。典型的工程性编程任务,很多coding非常机械,但是又非常繁琐。值得一提的是sample有很多很多不合理之处....其实我们是有义务去修的...结果我修了不少,还是遵从了一个sample behaviour结果被TA痛下杀手= =然后requirement里面提到了对QT designer有一些额外的功能要求,虽然我没用designer,但是觉得有几个比较好玩顺手实现了。
project2是俄罗斯方块,这个project雨巷大神只用了一个下午(含休息)就做完了https://www.youtube.com/watch?v=3lYvRE_1GbE...令人发指啊令人发指...我感觉我还要提高一下我的姿势水平。这个project是最regular的,做出来的成品不会有大的区别,但是背后的设计上可以做得很优雅,也可以做得很糟糕(某童鞋在deadline前三天时都还只有一个cpp)。
以上两个project我都在AGM上给写完了,诚如涛爷所说...AGM写code效率果然不一般
project3个人觉得是最精华的一个project,虽然可能很多人都很primitive的就给implement完了,但是不是这样的!让我们仔细阅读一句话
The point is that your program should not crash if this exception occurs.
这是一件很疼的事情,因为你的数据结构是支持Iterator的。所以设想一个Iterator还留在那里,但是你的container已经被destory了,最好情况是dangling pointer,最坏情况就是crash。查阅了STL的我发现STL是直接撒手不管,dangling pointer就dangling pointer呗。但是当时非常蛋碎的我鼓捣了很久很久,弄出了一套绝壁不会crash的设计,即reference count+lazy deletion。写的过程万分痛苦与纠结,还要考虑各路神奇的behaviour,最后写完交上去(这次的sample还是有一个bug),TA倒没认真查我的数据结构,认为我写对了。结果我在project4,project5时重用了这份代码(代码重用是很重要的思路!),到project5才把这两个数据结构改到没bug。
project4很水,真的很水,非常直接的计算几何。开始我以为要自己想算法,结果翻到下面居然直接给了算法,那么工作就很简单直接了。在这里再次膜拜雨巷大神一万次,这个project的官方sample是雨巷大神亲情提供的= =速度快得惊人,我优化了好几天才稍微和他的速度靠拢一点....
project5是非常综合性的一个project,而且可以玩出非常多花巧。我个人就把这个project写得非常generic,还模仿qt做了event系统和pre-compile过程(虽然是手动的),然后sample生成的网页非常之丑,跟CK交涉过了以后他同意可以写自己的样式,于是我又果断写了一套html generator(非常原始啊非常原始)。为了console的显示高大上,写了一个terminal环境的套件(主要是各种第三方库不让用嘛)。为了做数据验证,写了一个regular expression engine(众人皆表示这个最令人发指)。最后code写出来大概有4000来行吧(不计注释)
project6因为没有提升龟的需要所以没写,但其实非常有意思!我给过非CS的人看这个project的paper,众人皆惊呼:“太神奇了!”果然还是哪天写来玩一玩


做project,好的编程习惯非常重要,千万不要像某童鞋那样把所有实现堆到一个h/cpp里面,后来想分割都不好分了。源文件的分割和设计应该是在一开始整个project的设计时就要做好,因为这个分割相当于功能模块的分割,也相当于逻辑关系的分割。然后valgrind是个很好的工具,写完程序一定记着用valgrind查一下,当时查某童鞋的project5程序,先拿valgrind跑一下...一查2000个错误,我霎时就不想看了= =内存方面管理不当的错误绝对不要犯,不然信不信晚上Gan Dashen托梦吓死你= =


今年是一个新TA,看起来十分面善,可惜我很早做完了lab后来再也没见过他= =但是给project给得很松,第一个project还额外送我1分,简直大好人。


下面谈一点个人的想法
学期开始时就有传言说这门课以后就不再有了,那时CK还得意满满地跟我们说没有这回事,要是没了这门课他spring sem就没课教了。但是在final前的那个星期,他还是告诉了我们,这门课果然是以后不再有了。我不知道当时他是什么心情,但我想,如果是我,一定是落寞吧。我选择上这门课,很大程度上是因为看了cwiki上面诸多评论,或许是佩服CK作为一个教师的操守和坚持吧。然而这样的一位教师,终究敌不多体制。或许是因为课上的人数太少(这学期10人),或许是以前的SFQ评价不好,学校终于取消了这门课。从行政的运作和民主的理念来看,或许这是个正确的选择。然而作为学生的我,却感到有些心寒。我不知道,当科大的课程越来越简单,越来越肤浅,越来越贴近学生,当学生只知道稍微学学就开是hea,视学术为限制个人兴趣(我承认单纯的学术不利于个人发展),认为上大学就是刷龟,这样的变化究竟是好是坏,这样的大学教育是否成功。我不知道其他人怎么看学术,但我认为学术就是很简单的用时间换结果,雨巷大神会写编译器,Gan Dashen会写操作系统,恒爷上PG课横扫一片,我同样记得他们为得到这些付出的努力。如果只有水课,每个人都很好龟,学生怕是会失掉上进的动力吧。我感到很幸运,上学期遇到了SH Song这位professor,他说,上大学是为了跳出comfort zone,去挑战自己不知道的,不熟悉的东西。我认为,如果认为一门课很难,完全搞不定,professor在搞笑,是不是要去想想是自己没有相应的付出,是不是自己安于comfort zone而不思进取呢?当然你可以举出dekai之流来反驳我,但平心而论,我认为COMP2012H必然是不属于残害学生一类的。
其实我很佩服上面提到的wd童鞋,可以说他就是跳出comfort zone的典范。虽然他到课程最后code还是写得很糟糕,但是仍旧可以看出他的努力。记得写project1和project2时,他天天追着我想看我的code,最后他还动用了late credit才搞定。但是到后来,他已经能自己写code,而且按时交project了。这说明,只要有心学术,课程根本就无所谓难易,无所谓烂龟好龟。
考完final,去找SH Song聊了下天,他告诉我,ELEC2600以后也要缩短学时和内容了,fall sem暂时不变,要上的童鞋我建议赶紧了。他觉得科大把课程变简单的做法其实是一种戕害,我深以为然
或许再没有以前恒爷那届壮观的2012H队伍了
雨巷大神告诉我,科大以前还有门COMP104H,但也被时间裹挟而去
COMP2012H R.I.P.


-----分割线-----
为了防止因课程消失而造成课程不再留于人间,我特地备份了这门课的课程网站
http://johnmave126.github.io/comp2012h-backup/

以后有志于CS的童鞋可以试着做做project锻炼一下
然后我自己的project源码也开源出来供参考(虽然觉得参考价值不大)
https://github.com/johnmave126/comp2012h-paint

https://github.com/johnmave126/comp2012h-tetris

https://github.com/johnmave126/comp2012h-queues

https://github.com/johnmave126/comp2012h-patterns

https://github.com/johnmave126/comp2012h-register

最后打个广告,有没有谁想2013-1014 fall想去尝试重开2711H的来报个名
宇神求组织= =

查看更多/評論

[COMP2012H]OOP&DS

TANG Chi Keung
课程时间:2011年Spring
授课教授:CK
Grade:mean > A

我也来凑个热闹。

关于workload,拿好龟的workload确实不大,但是想学好是没有尽头的。尤其是OOP这种关乎设计的东西。

关于Prof,CK人很好,但讲课还是比较水的。回邮件的速度基本取决于问题的质量,如果是发比较扯淡的邮件那可能在三四天后才有回复。

关于TA,TA人也很好,给分还算公正,因为大小写什么的扣分还是应该接受吧,计算机傻,多一个空格都可以是严重的bug,所以像大小写这种东西还是应该严肃对待。TA的问题在于评分几乎只看Functionality,所以似乎和OOP扯不上什么关系....

关于project,project们的傻逼之处在于spec中给出了太多的细节,每个project都还给了sample,所以我们大都参照着spec模仿sample后写出了相类似而毫无特点和风格的东西。最后那个extra看似是从PG课上搬来的,但其实只是读篇paper然后implement一下其中的算法,除了知道paper长什么样子外好像也没学到什么..

课程的设计还是很不合理的,lectures分为OOP和DS两块被midterm分开,可lab和project都只是OOP的东西,lab严重滞后于project(做完project one几乎已经用到lab中所有的东西了)。而DS那块像是把OOP压缩后插进去的,讲的也比较粗略。notes还是用151和171的旧notes,所以刷notes需要比较快而深度却不够。

CK自己也说在334的改革之下这门课不太可能幸存下去,但其实相比较而言这门课还是不错的。所以推荐EE的同学们考虑一下去上这门课,上的时候顺便关照一下year0的CS学弟们。

(小提示:如果在上课前面那个winter多写完几个projects,上这门课的时候可以非常hea)

查看更多/評論

[COMP2012H]OOP/Datastructure and algorithm

TANG Chi Keung
课程时间:2011年春季
授课教授:CK.Tang
Grade:Grade神
COMP152H自去年开课起就以workload大而闻名。看了诸多大神对着门课的评论,我诚惶诚恐的写下我的看法。。。

我觉得这门课给我最大的帮助就是养成了去看技术文档的习惯。这门课主要用的GUI library是Qt这是一个跨平台的应用程序框架,现在由诺基亚开发,当然随着诺基亚的式微,这个框架恐怕前景惨淡。。。好吧,扯远了。

我们有三个project都是用Qt写的,其中第一个基本就是辛苦的调用这个框架的各种接口,无技术含量,纯属苦力活。但是,CK整个学期基本没有给我们讲Qt怎么用,Lab有讲那么一点,但进度严重落后于project。所以,一切都是靠我们一页页的翻Qt的技术文档。。。(参见这里)。

在做的时候觉得很虐,但回头想想,看技术文档是学计算机十分重要的一门技能。在计算机中,各种语言的各种程序框架成百上千,不可能每一种都有人来教你,看documents是掌握和应用这些东西最基本的要求。

第二呢,这门课的project还是比较精髓的。事实上着门课的精髓也就是他的6个project(今年比去年多了个extra)。
第一个写个画板,因为从COMP104写着那些toy program过来的我们对GUI没有任何了解,写这个project需要大量的时间去学习Qt,本身coding又十分繁琐,大概需要2000-2500行左右的代码吧。。。哪个大神在1500以下的,求膜拜。。。。
第二个,写个俄罗斯方块。。额,我写这个的时候参考了不少网上的资料,搞明白原理之后其实很简单,大概700-1000行代码可以拿下,我是开AGM的时候搞定的(PS.AGM写code效率非常不错)
第三个,这个是最坑爹的,其实不难,就implement一个vector一个linked list就完了,关键是这个project的description不清不楚,TA改得各种纠结(关于这个TA,下面还会详细讲)。结果这个project的grade各种悲剧。。悲剧啊。。。。
这个project也用不了多少代码,没统计过,不到1000
第四个,implement两个算法,给出一组点的坐标,找出共线的。两个算法,一个暴力破解,一个用了排序的。算法描述都给你了,写一遍就是了。不难,不过debug挺纠结的,需要不输出重复。1000行左右吧。。把算法写出来,剩下的据不难了。。。
第五个,写个小小的课程注册系统,用哈希表(hashtable),这个是比较考验程序设计的,如果结构不好会产生各种麻烦,我自己就重写了好多次。而且如果有更高的追求,要写出可扩展性更强的东西代码量还是非常繁重的,比如某大神写了4000行,这里我只能表示膜拜。。。我自己最后是接近三千行吧。。。
第六个,额外的,写了可以提升一个subgrade经济实惠,写一个根据原有的texture产生新texture,看起来挺吓人,但其实算法都给出来了,代码也不十分繁重,我两个下午写完的。效果十分神奇,值得一试。

这些project的workload其实个人认为之前的传闻有点夸大了,除了第一个和第五个外,其他的其实coding都不算太沉重。OOP本身就是为提高大程序的可维护性和可理解性提出的一种编程概念,没有一个足够大的project个人认为理解起来比较困难。我之前就一直不理解要object来干什么,object能干的事情procedure都能干。

至于使用C++嘛,有位大神(再次膜拜下)说C++太繁琐,但也因此C++的效率比较高,所以熟练掌握C++还是十分有必要的。有了C++其他的语言相对都容易得多了。对于计算机入门的语言向来有很多争论,比如ust从明年开始CS入门的课就是java和python了(斯坦福用的是java,而MIT用的是python),但个人还是比较倾向于由C++入门的。

下面来讲将CK,其实我是十分喜欢这个教授的,他效率十分高,写程序的时候有抽筋般的手速,回邮件的效率非常高,刷notes的效率高到了极致,一节课一百多页的notes轻松秒杀。教授人很好,热心详细解决每个问题,我在邮件中向他请教过各种问题。。。他自己的水平是很高的,但是讲的课说实话不是非常好,英语有很重的香港口音,而且基本是念notes,所以要学明白,自己看书是王道,话说这门课用的教材Data Structure and algorithm analysis in C++被誉为20世纪最经典的计算机科学教材之一,十分值得一看。CK个人感觉算法和数据结构部分过得实在太粗糙,这种内功的东西还是值得仔细探讨的。

话说我们今年的TA简直就是极品TA,把我们辛辛苦苦写的project当一坨屎一样来改,各种函数名的大小写问题,少些了几行comment啦都扣分。把我们写的死去活来的东西改得千疮百孔。。坑爹啊。。。。

再说说grade,这门课的grade还是相当不错的,这学期除了有个B-外全都在A range。只要老老实实写好每个project拿A range是妥妥的。

查看更多/評論

[COMP2012H]C++以及数据结构

TANG Chi Keung
课程时间:2011年春季
授课教授:CK Tang
Grade:较好

上这个课嘛...实际意义其实很一般。
我个人认为,这个课的主要意义在于它是一个符号。有趣并且有爱的教授,一学期6000-8000loc的C++,严格的TA,这些都是以前没有见识过的。
上这个课来长见识,我觉得还是不错的。

————我是胡言乱语的分割线————

pros:
- yr0就能上,而且挺有趣
- 小班教学,能认识了解好多同学
- C++是一门相当繁琐的语言。上了这门课写了几千行C++之后,再学其他语言就容易了
- C++是如此的繁琐以致于你会想用metaprogramming(不,这里指的并不是C++的template metaprogramming)来降低coding的复杂度

cons:
- 课名是OOP和数据结构可是教的是C++这门繁琐至极的语言
- project都比较消耗时间
- 上课时并没有深入讨论数据结构和算法
- 上课的时候会被[i]兄贵[/i]教授的肌肉闪瞎硬化氪金狗眼(?)

总之是第一门H课,也是唯二两门教你做码农的H课里的第一门,好好的享受吧...

查看更多/評論

[COMP2012H]OOP and Data Structure (Honor Study Track)

TANG Chi Keung
课程时间:2010年春季
授课教授:
Grade:很好

CK Tang的COMP152H是科大工作量最大的课程,没有之一。 想上好这门课,每周需要进行大量的思考进行程序设计,投入大约二十小时时间去写

程序。

课程主要内容:
1.lecture讲解两部分知识:面向对象的程序设计;数据结构。使用的notes为旧年的COMP151H和171H所用的PPT,这说明它是一门浓缩了两个Honor

course的course。上课的时候CK会用非常迅猛的速度过notes,曾经创下一天讲100页的记录。这也就意味着考试之前有很多notes需要复习,这也

就意味着纯靠考试前复习是不可能的。尤其是下半学期的数据结构部分,很多算法需要反复仔细地悟。

2.lab做一些很废的小程序练手。

3.最考验人的是五个大的程序设计。第一个是做一个小画板,第二个是写俄罗斯方块游戏,第三个是泛型函数设计,第四个要求设计快排算法,

第五个类似软件工程,设计一个小小的选课系统。总计下来一学期写了6000行代码,不包括那些写了又删掉的语句。所有的设计的要求都写得云

里雾里,需要自己想程序的结构,这进一步加大了写程序的工作量。更郁闷的是身边有骥华哥这样喜欢精益求精的人,搞得我也不得不学着精益

求精,把程序代码改了又改……由于这些程序作业太变态,所以每一个作业的deadline日期都有着非同寻常的意义,所有上COMP152H的同学这学

期的生活都被这些deadline齐刷刷分成了5份……

很多人都因为这几个程序作业对COMP152H望而却步。要求是变态了一点,但是确实这样的训练能极大地提高人编程的水平,而且我们还练熟了

linux系统的操作以及linux下Qt图形界面的开发。总之益处多多。如果你想在COMP的course里面学一些实在的东西,那么CK Tang的COMP152H是你

最好的选择。

4. In addition to 上面这一切,还有6个written assignment,从下学期开始每周做四五道算法题,有些还是蛮challenging的。因为CK很喜欢

用LaTeX来排版,所以通过做这些算法题,我还学会了用LaTeX。

5.另一个好处就是,考试占的比例特别少。期中10%,期末25%。期中考试的时候还允许提前看卷子。在考试团团长鸟哥的带领下,大家期中考得

都不错。期末考试也不是太难,最后一个题还让我提前猜中了。


说些题外话。
在我看来,CK Tang是一个悲剧英雄。CS Department里面,他教过的课程得到学生的评价是所有教授里最低的,原因已经陈述如上:工作量

太大。十年前他刚刚来到的时候,科大还没有像样的Computer Graphics研究。是他开创了这个领域,而且让科大达到了很高的水平。但是他现在

也只是一个associate,很大一部分原因就是学生给他的评价太低。在科大这个地方讲课,好grade和少workload是让学生说好话的最好方式。现

在人人都是想要个好grade,至于能从上的课里面学到什么他们完全不管。你可以感觉到,科大的课程越上越简单,教授和学生都越来越喜欢用省

事的方法互相蒙混过关。在这个grade至上的功利学校里面,CK Tang和他变态的COMP152H真是一个难能可贵的组合,只有他的课真正教人学到了

东西。多年以来CK始终秉承这样的思想,他教过的所有课都有过COMP152H而无不及。当然,也被学生骂得很惨。

CK说他曾经想过离开。这学期开始前他去另外一所知名大学面试,人家愿意给他Chair Professor的职位做,而且酬劳远高出他现在职位的

薪水。你应该能从这个事情中窥到一些问题:一个人有能力做Chair Professor,但因为在科大得不到学生的好评,所以只是一个associate

professor,这是谁的问题呢?经过了一些艰难的抉择之后他还是选择留在科大,原因他不愿意说,他只说“I fliped a coin”(我拿硬币决定

了去留)。但是我觉得背后他另有自己的想法,也许他期望有一天科大的学生不要只是为了拿好grade而学习?期望有一天科大的教授不会为了讨

好学生而把自己的课讲得像是给SB听一样?

总之我深为之感动。倘若有朝一日我成为一个professor,定当如CK Tang一样,就算被人骂成SB也不会把自己的课讲成SB。


查看更多/評論

[COMP2012H]OOP and Data Structures (Honors Study Track)

TANG Chi Keung
课程时间:2010年春季
授课教授:Chi-Keung Tang
Grade:很好

COMP152(H)是将原先COMP151和COMP171合并后的新课程,内容比较多,上课节奏很紧凑,要跟上需要付出一定努力。不过152H不论homework还是exam都不难,仔细准备便会有好结果。
这门课的难点集中在占总分50%的5个project上(5*10%)。工作量巨大(有的project需要千行以上的代码),而且需要很多课程并不包括的知识,比如linux系统操作,用Qt进行window programming之类的,对自学要求很高。做第一个project(用Qt写一个类似windows画图板的程序)时,由于完全没接触过Qt,有一些手足无措,很是辛苦,上手以后便轻松多了。想要take这门课的同学不妨先自学一下Qt。
教授的讲课水平很一般,口音很重,基本是照本宣科。不过除了这点以外他还是一个很不错的教授。性格很有趣(上课时各种卖萌动作...);亲自上tutorial;回邮件飞快,有问必答;还有各种方便学生的政策,比如做project有10天的delay credit,mid-term preview(考试之前把试卷给我们看...)等等;给分也比较松。grade极好(honor track course的惯例),只要能跟上基本就有A range。
在COMP104H取消之后,这应该是泛CS系接触到的第一门honor course,不管怎样都值得尝试一下。

查看更多/評論